import { IpcMainEvent } from "electron"

/**
 * 进程间通信模板类
 */
abstract class IpcTemplate {
    readonly id: string
    constructor(id: string) {
        this.id = id
    }
    /**
     * 处理进程间通信 根据方法名称动态调用函数，如果子类有特殊需求可重写此方法
     * 
     * @param {string}  模块id 
     * @param {string}  方法名 
     * @param {JSON} 参数 
     * @param {Object}  渲染进程的BrowserWindow实例
     */
    handleRendererSend(mId: string, func: string, params: string, event: IpcMainEvent) {
        const length = this[func].length
        //根据参数长度 判断是否需要注入参数 （ts提示错误 不影响运行）
        if (length == 0) {
            this[func]()
        } else {
            this[func](params)
        }
    }
}

export default IpcTemplate